package com.cskaoyan.javase.method._1basic;

/**
 * 方法的使用细节2:
 * 思考:
 * 方法在调用时,需要给出具体的实参,那么方法调用时的实参数据类型,需要和形参数据类型保持一致吗?
 * 实际上不是必须的,不需要完全保持一致,而是需要保持兼容.
 * 什么是兼容呢?
 * 考虑自动类型转换就可以了
 * 如果实参的数据类型可以自动类型转换到形参数据类型,那么这个实参就允许传入方法.
 *
 * 举一反三:
 * 1.既然实参数据类型和形参数据类型存在自动类型转换,那么具体返回值的数据类型和返回值类型是否也存在自动类型转换呢?
 * 实际上也是存在的
 * 如果具体返回值的数据类型能够自动类型转换到返回值类型,那么也是允许的
 *
 * 2.形参数据类型,返回值类型都可以是基本数据类型,也可以是引用数据类型,那么引用数据类型如果出现自动类型转换,也符合以上原则吗?
 *
 * 当然是符合的(现在还讲不了,以后再说,可以先留个映像)
 *
 * @since 16:59
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Demo2 {
    public static void main(String[] args) {
        test(100L);
        long a = 100L;
        test(a);

        // int --> long 自动类型转换
        test(100);
        int b = 100;
        test(b);

        test2(120);
        test2(120L);
        test2(120F);
        test2(120.0);
        test2('a');
    }

    public static void test(long a) {
    }

    public static void test2(double a) {
    }

    public static double test3() {
        // return 100;
        // return 100L;
        // return 100F;
        // return 100.0;
        return 'a';
    }
}
